<?php

class Admin_UsuariosController extends Zend_Controller_Action {

       private $usuariosDao;

    public function preDispatch()
    {
        $auth = Zend_Auth::getInstance();

        if ($auth->hasIdentity()) {

            $this->view->usuarioLogueado = $auth->getIdentity()->mail;
            $this->view->usuarioRol = $auth->getIdentity()->role;
        } else {
            $this->_helper->redirector('index', 'login');
            return;
        }
    }

    public function init() {

        $this->usuariosDao = new Doctrine_Model_UsuariosDoctrineDao();

        $this->_flashMessenger = $this->_helper->getHelper('Mensaje');
    }

    public function indexAction() {
       $usuarios= $this->usuariosDao->obtenerTodos();
     
       $this->view->listado=$usuarios;
    }

    public function agregardepartamentoAction() {

        $form = new Admin_Form_Departamento();
       
        $accion = $this->view->nuevo = $this->getRequest()->getParam('accion');
        $id = $this->getRequest()->getParam('id');
        // $accion;exit;
        $idDireccion = $this->getRequest()->getParam('idDireccion');
        if (!empty($idDireccion)) {
             
            $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);
            
            $this->view->nombreDireccion = $direccion->getNombre();
        }
        
        if ($this->getRequest()->isPost()) {
            $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);
            if ($accion == 'edit') {
                $departamento = $this->departamentoDoctrineDao->obtenerPorId($id);
                $mensaje = "Departamento Modificada con Exito";
            } else {
                $departamento = new Doctrine_Model_Entities_Departamento();
                $direccion->agregarDepartamento($departamento);
                $mensaje = "Direccion Registrada con Exito";
            }

            $nombre = $this->getRequest()->getParam('nombre');
            $departamento->setNombre($nombre);


            if ($this->direccionDoctrineDao->guardar($direccion)) {
                $this->_flashMessenger->addSuccess($mensaje);
            } else {
                $this->_flashMessenger->addError('Error al intentar Registrar/Modificar la Direccion.');
            }
        } else {
            if (!empty($accion)) {

                $departamento = $this->departamentoDoctrineDao->obtenerPorId($id);

                if ($departamento) {
                    if ($accion == 'borrar') {
                        $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);

                        $departamento->setBorrado(1);
                        if ($this->direccionDoctrineDao->guardar($direccion)) {
                            $this->_flashMessenger->addSuccess("Direccion Borrada exitosamente");
                        } else {
                            $this->_flashMessenger->addError('Error al intentar Borrar la Direccion.');
                        }
                    } else {

                        $form->populate($departamento->toArray());
                    }
                }
            }
        }
        $this->view->form = $form;
        $this->view->accion = $accion;
        $this->view->idDireccion = $idDireccion;
        $this->view->departamentos = $direccion->getDepartamentos();
        $this->view->direccion = $direccion;
    }

    public function areasAction() {
        $form = new Admin_Form_Departamento(); //sirve tambien para areas
        $accion = $this->view->nuevo = $this->getRequest()->getParam('accion');
        $id = $this->getRequest()->getParam('id');
        $idDepartamento = $this->getRequest()->getParam('idDepartamento');
        // $accion;exit;
        $idDireccion = $this->getRequest()->getParam('idDireccion');
        if (!empty($idDireccion)) {
            $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);
            $departamento = $this->departamentoDoctrineDao->obtenerPorId($idDepartamento);

            $this->view->nombreDireccion = $direccion->getNombre();

            $this->view->nombreDepartamento = $departamento->getNombre();
            $area = $departamento->obtenerArea($id);
        }
        if ($this->getRequest()->isPost()) {
            $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);
            $departamento = $this->departamentoDoctrineDao->obtenerPorId($idDepartamento);
            if ($accion == 'edit') {

                $area = $departamento->obtenerArea($id);
                $mensaje = "Departamento Modificada con Exito";
            } else {
                $area = new Doctrine_Model_Entities_Area();
                $departamento->agregarArea($area);
                $mensaje = "Direccion Registrada con Exito";
            }

            $nombre = $this->getRequest()->getParam('nombre');
            $area->setNombre($nombre);


            if ($this->direccionDoctrineDao->guardar($direccion)) {
                $this->_flashMessenger->addSuccess($mensaje);
            } else {
                $this->_flashMessenger->addError('Error al intentar Registrar/Modificar la Direccion.');
            }
        } else {
            if (!empty($accion)) {



                if ($area) {
                    if ($accion == 'borrar') {
                        $direccion = $this->direccionDoctrineDao->obtenerPorId($idDireccion);
                        $departamento = $this->departamentoDoctrineDao->obtenerPorId($idDepartamento);
                        $area->setBorrado(1);
                        if ($this->direccionDoctrineDao->guardar($direccion)) {
                            $this->_flashMessenger->addSuccess("Direccion Borrada exitosamente");
                        } else {
                            $this->_flashMessenger->addError('Error al intentar Borrar la Direccion.');
                        }
                    } else {

                        $form->populate($area->toArray());
                    }
                }
            }
        }
        $this->view->form = $form;
        $this->view->accion = $accion;
        $this->view->idDireccion = $idDireccion;
        $this->view->idDepartamento = $idDepartamento;

        $this->view->areas = $departamento->getAreas();
    }

}

